package com.wlz.creational.factory.factorymethod;


import com.wlz.creational.factory.simpleFactory.Human;
import com.wlz.creational.factory.simpleFactory.impl.YellowHuman;

/**
 *工厂方法总结
 创建对象需要大量重复的代码
 客户端（应用层）不依赖于产品类实现如何被创建、实现等细节
 一个类通过其子类来指定创建哪个对象
 优点：
 用户只需要关系所需产品对应的工厂，无须关心创建细节
 加入新产品符合开闭原则，提高可扩展性
 缺点：
 类的个数容易过多，增加复杂度
 增加了系统的抽象性和理解难度
 */
public class Client {
    public static void main(String[] args) {
        HumanFactory humanFactory=new HumanFactory();
        Human yellow = (Human) humanFactory.createHuman(YellowHuman.class);
        yellow.getColor();
        yellow.sayHello();
    }
}
